// #include <stdio.h>
// #include <stdlib.h>
// #include <string.h>
// #include <stdbool.h>
//
// #include "Address Book(SeqList)/SeqList.h"
//
// #define MAXLEN 255
//
// typedef struct {
//     char ch[MAXLEN];
//     int length;
// } SString;
//
// // 赋值操作：把chars赋给T
// bool StrAssign(SString* T, const char* chars) {
//     if (T == NULL || chars == NULL) return false;
//     int len = strlen(chars);
//     if (len >= MAXLEN) return false;
//     strncpy(T->ch, chars, len);
//     T->length = len;
//     T->ch[len] = '\0';
//     return true;
// }
//
// // 复制操作：T = S
// bool StrCopy(SString* T, const SString* S) {
//     if (T == NULL || S == NULL) return false;
//     T->length = S->length;
//     strncpy(T->ch, S->ch, S->length);
//     T->ch[S->length] = '\0';
//     return true;
// }
//
// // 判空操作
// bool StrEmpty(const SString* S) {
//     return S == NULL || S->length == 0;
// }
//
// // 求长度
// int StrLength(const SString* S) {
//     return S ? S->length : 0;
// }
//
// // 清空操作
// void ClearString(SString* S) {
//     if (S != NULL) {
//         S->length = 0;
//         memset(S->ch, 0, MAXLEN);
//     }
// }
//
// // 销毁操作（模拟）：释放内存空间
// void DestroyString(SString* S) {
//     if (S != NULL) {
//         S->length = 0;
//         memset(S->ch, 0, MAXLEN);
//         // 对静态结构体无法真正释放内存，这只是模拟销毁
//     }
// }
//
// // 字符串连接 S1 + S2 => T
// bool Concat(SString* T, const SString* S1, const SString* S2) {
//     if (T == NULL || S1 == NULL || S2 == NULL) return false;
//     if (S1->length + S2->length >= MAXLEN) return false;
//
//     memcpy(T->ch, S1->ch, S1->length);
//     memcpy(T->ch + S1->length, S2->ch, S2->length);
//     T->length = S1->length + S2->length;
//     T->ch[T->length] = '\0';
//     return true;
// }
//
// // 打印字符串
// void PrintStr(const SString* S) {
//     if (S == NULL || S->length == 0) {
//         printf("[空串]\n");
//     } else {
//         printf("%.*s\n", S->length, S->ch);
//     }
// }
//
// int main() {
//     SetConsoleOutputCP(CP_UTF8);
//     SString s1, s2, s3;
//     StrAssign(&s1, "wang");
//     StrAssign(&s2, "dao");
//
//     printf("s1 = "); PrintStr(&s1);
//     printf("s2 = "); PrintStr(&s2);
//
//     Concat(&s3, &s1, &s2);
//     printf("Concat(s1, s2) => s3 = "); PrintStr(&s3);
//
//     printf("s3 长度 = %d\n", StrLength(&s3));
//
//     ClearString(&s3);
//     printf("ClearString(s3) 后: "); PrintStr(&s3);
//
//     DestroyString(&s1);
//     printf("DestroyString(s1) 后: "); PrintStr(&s1);
//
//     printf("s2 是否为空？%s\n", StrEmpty(&s2) ? "是" : "否");
//     return 0;
// }
